如何为容器提供持久化存储?
越来越多的企业开始在生产环境中从裸机和以VM为中心向容器过渡。根据Sysdig 2018年从生产环境的90,000个容器中收集到的实际数据显示,与2017年相比,每位客户每个主机的容器中位数从10个增加到15个,最高的看到一个组织在一台主机上运行154个容器。
容器技术的大规模应用同时,也催生了另外一个问题,即如何为其提供持久化存储?
1挑战与应对
挑战1:有状态的容器实例运行时,需要持久化卷
A1:当节点异常时,Pod 会被调度到其他节点,如果使用本地卷,新的Pod启动后无法访问原有数据。XSKY提供的解决方案,支持持久化卷,Pod被调度后,依然可以访问到之前的数据。
挑战2:应用创建新容器实例时,需要动态创建的新卷
A2:应用新建一个容器实例运行时,需要一个动态创建的、符合本实例需求的新卷来承载数据;XSKY提供的解决方案,支持存储类的插件,并实现卷的动态创建。
挑战3:不同类型的应用运行时,需要不同访问模式的存储卷
A3:数据库类应用:如MySQL,需要属于自己的独占卷;内容管理类应用:如WordPress,需要共享卷来实现多实例数据共享;XSKY解决方案,同时支持多类型的存储插件,从而同时支持不同类型应用的访问需求。
挑战4:生产环境中交付整个容器系统时,需要存储支持多种容器编排
A4:真实的生产交付过程中,最终客户可能需要存储支持多种容器编排,从而实现存储的复用;XSKY解决方案,经过长期的、持续迭代的测试,已稳定对接主流的多种容器编排系统。
XSKY容器存储解决方案详解
Kubernetes在从孵化走向毕业的过程中,逐步构建出一个完善的存储管理虚拟层,并为上层应用抽象出易于使用的存储概念。
XSKY作为数据存储提供商,积极融入Kubernetes生态,提供多类型的存储驱动与丰富的存储特性,以满足最终容器上生产中的存储需求。
Kubernetes存储概念与XSKY驱动类型
SC(StorageClass):即存储类,对应底层存储资源池;
PV(PersistentVolume):即持久卷,对应底层存储卷或文件夹;
PVC(PersistentVolumeClaim):即卷声明,计算任务对存储资源的需求声明;
Volume:计算任务中实际用到的存储空间;
XSKY SDS驱动(SC)类型:RBD卷,iSCSI卷,NFS卷。
Kubernetes存储组件与XSKY存储特性
PV Controller:依照计算需求,动态准备好底层存储卷;
AttachDetach Controller:依照调度结果,实现存储卷到指定节点的挂载;
Volume Manager:部署在所有计算节点上,负责让Pod把存储卷用起来;
Volume Plugins:由存储厂商实现的卷插件,符合 Kubernetes定义的存储接口(创建、挂载等),即厂商驱动;
XSKY Plugin:在已有Kubernetes存储接口上,提供更丰富的存储高级特性,满足真实生产需求;
– 卷级别QoS
– 卷定时备份
– 卷异步复制
– 卷同步复制
3MySQL应用部署Demo
1. 创建StorageClass,xsky-storageclass.yaml文件内容如下:
StorageClass关键属性介绍:
name : SC 的名称
monitors : XSKY SDS 管理节点 IP 与 PORT
pool : XSKY SDS 存储资源池
provisioner: 后端存储类型
创建结果如图:
2. 创建PersistentVolumeClaim,xsky-pvc.yaml文件内容如下:
PersistentVolumeClaim三个属性介绍:
name: PersistentVolumeClaim的名称
storage-class: 指定SC的名称
storage: 请求的卷大小
创建结果如图:
3. 创建ReplicationController(Pod的一种形式),RC.yaml 文件内容如下:
创建结果如图:
登录到该MySQL实例测试:
4. Kubernetes Dashboard中的创建结果如下:
XSKY SDS容器存储全景图
XSKY SDS已支持可动态创建的持久化卷;
可同时支持不同类型应用的存储访问需求,包括容器镜像库如 Harbor的对象存储需求;
稳定对接多种容器编排系统,达到生产交付级别;
提供丰富的存储高级特性,满足核心业务的多种数据容灾需求。
推荐阅读
Recommended reading
点击下列标题 阅读更多资讯